var express = require('express');
var router = express.Router();
const pro = require("../sql/pro");
const sql = require("../sql/sql");
const uuid = require("uuid");
const xlsx = require("node-xlsx")

// 页码索引
let index = 0;
// 单页显示数据条数
let num = 10;
// 初始总页码
let maxNum = 0;

// 一级路由/goods，查询所有数据
router.get('/', function(req, res, next) {
  index = 0;

  // 获取数据总条数，计算最大页码
  sql.getLen({
    colName:pro
  }).then(length=>{
    maxNum = Math.ceil(length/num);
  })

  // 读取数据
  sql.getPage({
    colName:pro,
    index,
    num
  }).then(data=>{
    // 传给ejs
    res.render('goods', {
      index:1,
      data,
      maxNum,
      pageIndex:index,
      num,
      power: req.session.power
    });
  })
});

// 二级路由/goods/add，渲染添加表单页面
router.get('/add', function(req, res, next) {
  res.render('goodsAdd', {
    index:1,
    power: req.session.power
  });
});

// 三级路由/goods/add/action，提交表单之后的数据处理
router.get('/add/action', function(req, res, next) {
  // 后端接收到来自页面的数据：req.query

  // 处理数据
  const obj = {
    ...req.query
  }
  // 字符数据转成数值
  obj.price -= 0;
  obj.stock -= 0;
  obj.sales -= 0;
  obj.discount -= 0;
  obj.grade -= 0;
  // 添加唯一id
  obj.proId = "pro_" + uuid.v1();

  // console.log(obj)

  // 将数据，存储到数据库
  sql.insert({
    colName:pro,
    data:obj
  }).then(()=>{
    // 数据库返回存储成功
    // 路由重定向
    res.redirect("/goods")
  })
});

// 二级路由：/goods/del，删除数据
router.get('/del', function(req, res, next) {
  sql.delete({
    colName:pro,
    where:{proId:req.query.id}
  }).then(()=>{
    // 路由重定向
    res.redirect("/goods")
  })
});

// 二级路由：/goods/upload，批量导入数据
router.get('/upload', function(req, res, next) {
  // 拼接路径：__dirname内置变量，表示当前文件所在文件夹的绝对路径
  // console.log(__dirname + "/../data/pro.xlsx")
  // 读取xlsx文件
  const xlsxData = xlsx.parse(__dirname + "/../data/pro.xlsx");
  // 找到excel中的数据所在的工作表
  const xd = xlsxData[0].data;
  // 准备数组存储解析之后的数据
  const arr = [];
  // 遍历解析
  for(let i=1;i<xd.length;i++){
    arr.push({
      proName: xd[i][1],
      mold: xd[i][2],
      brand: xd[i][3],
      logo: xd[i][4],
      proImg: xd[i][5],
      price: xd[i][6],
      describe: xd[i][7],
      stock: xd[i][8],
      sales: xd[i][9],
      discount: xd[i][10],
      grade: xd[i][11],
      proId: "pro_" + uuid.v1()
    })
  }
  // 将数据存入数据库
  sql.insert({
    colName:pro,
    data:arr
  }).then(()=>{
    // 路由重定向
    res.redirect("/goods");
  })
});

// 二级路由：/goods/set，渲染添加表单页面
router.get('/set', function(req, res, next) {
  // req.query.id

  sql.get({
    colName:pro,
    where:{proId: req.query.id}
  }).then(data=>{
    // console.log(data[0])
    res.render("goodsSet",{
      index:1,
      data:data[0],
      power: req.session.power
    })
  })
});

// 三级路由：/goods/set/action，提交修改表单之后的数据处理
router.get('/set/action', function(req, res, next) {
  // 后端接收到来自页面的数据：req.query

  // 处理数据
  const obj = {
    ...req.query
  }
  // 字符数据转成数值
  obj.price -= 0;
  obj.stock -= 0;
  obj.sales -= 0;
  obj.discount -= 0;
  obj.grade -= 0;
  // console.log(obj)
  // 修改数据

  sql.update({
    colName:pro,
    where:{proId:obj.proId},
    data:obj
  }).then(()=>{
    res.redirect("/goods")
  })
});


// 二级路由：/goods/page，分页获取数据
router.get('/page', function(req, res, next) {
  index = req.query.index-0;

  sql.getLen({
    colName:pro
  }).then(length=>{
    maxNum = Math.ceil(length/num);
  })

  // 读取数据
  sql.getPage({
    colName:pro,
    index,
    num
  }).then(data=>{
    // 传给ejs
    res.render('goods', {
      index:1,
      data,
      maxNum,
      pageIndex:index,
      num,
      power: req.session.power
    });
  })
});


module.exports = router;